

import java.awt.Point;
import java.util.Stack;

public class Solution 
{

	private Candidate[][] solution;
	// 'options' will contain the free points (positions) in solution
	// During solving points are moved from 'options' to 'placed'
	private Stack<Point> options, placed;


	public Solution(){
		// The 2D array gets an empty ring around it. This helps because when
		// checking the adjacent squares we don't risk a ArrayIndexOutOfBounds
		//  012345
		// 0......
		// 1...-..
		// 2.---..
		// 3..---.
		// 4...-..
		// 5......
		//
		solution = new Candidate[6][6];
		options = new Stack<Point>();
		placed = new Stack<Point>();

		options.push(new Point(4,3));
		options.push(new Point(3,4));
		options.push(new Point(3,3));
		options.push(new Point(3,2));
		options.push(new Point(2,3));
		options.push(new Point(2,2));
		options.push(new Point(2,1));
		options.push(new Point(1,3));
	}

	/**
	 * Checks whether there are no two same cards lying next to eachother
	 * @param candidate
	 * @return Boolean indicating whether this candidate can be put in the
	 * next free position.
	 */
	public boolean fits(Candidate candidate){
		// TODO
		return false;
	}

	public void record(Candidate candidate)
	{
		// TODO
	}

	public boolean complete()
	{
		// TODO
		return false;
	}

	public void show()
	{
		// TODO
	}

	public Candidate eraseRecording()
	{
		// TODO
	}

	/**
	 * Checks whether the following rules are fulfilled:
	 * Elke aas grenst (horizontaal of verticaal) aan een heer.
	 * Elke heer grenst aan een vrouw.
	 * Elke vrouw grenst aan een boer.
	 * @return
	 */
	public boolean isCorrect() {
		// TODO
		return false;
	}

}
